// main.cc
#include <iostream>
#include <vector>
#include <string>
#include <unistd.h>
#include "Thread.hpp"

struct ThreadData
{
    std::string threadname;
};

void Print(void *args)
{
    while (true)
    {
        ThreadData *td = static_cast<ThreadData *>(args);
        std::cout << td->threadname << std::endl;
        sleep(1);
    }
}

int main()
{
    ThreadData *td = new ThreadData;
    td->threadname = "thread1";
    Thread<ThreadData> t(Print, td);
    t.Run();
    std::cout << "是否启动成功：" << t.IsRunning() << std::endl;
    std::cout << "启动时间：" << t.StartTimestamp() << std::endl;
    t.Join();
    return 0;
}

// void Print()
// {
//     while (true)
//     {
//         std::cout << "new thread" << std::endl;
//         sleep(1);
//     }
// }

// int main()
// {
//     std::vector<Thread> threads;

//     for (int i = 0; i < 10; ++i)
//     {
//         threads.push_back(Thread(Print));
//     }
//     for (auto &t : threads)
//     {
//         t.Run();
//     }
//     for (auto &t : threads)
//     {
//         t.Join();
//     }

//     // Thread t(Print);
//     // t.Run();
//     // std::cout << "是否启动成功：" << t.IsRunning() << std::endl;
//     // std::cout << "启动时间：" << t.StartTimestamp() << std::endl;
//     // std::cout << "线程名字：" << t.Name() << std::endl;
//     // t.Join();

//     return 0;
// }